; division routine { posted to comp.sys.acorn by Conrad Hughes }
;       modification posted to comp.sys.acorn by Graeme Williams }

 .MACRO INTdivide_mac
 
  STR %2,\arg2save
  STR %3,\arg3save
  STR stackregister,\stackregistersave

  MOV tempregister,#0
  CMP %2,#0
   RSBLT %2,%2,#0
   SUBLT tempregister,tempregister,#1
  CMP %3,#0
   RSBLT %3,%3,#0
   MVNLT tempregister,tempregister
  STR tempregister,\sign 

  MOV stackregister,#28. 
  MOV tempregister,%2,LSR#4
  CMP %3,tempregister,LSR#12.
  SUBLE stackregister,stackregister,#16. 
  MOVLE tempregister,tempregister,LSR#16.
  CMP %3,tempregister,LSR#4. 
  SUBLE stackregister,stackregister,#8. 
  MOVLE tempregister,tempregister,LSR#8.
  CMP %3,tempregister
  SUBLE stackregister,stackregister,#4
  MOVLE tempregister,tempregister,LSR#4
  MOV %2,%2,LSL stackregister
  RSB %3,%3,#0

  ADDS %2,%2,%2
  ADD stackregister,stackregister,stackregister,LSL#1 
  ADD PC,PC,stackregister,LSL#2
  MOV stackregister,stackregister

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2
  
  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2

  ADCS  tempregister,%3,tempregister,LSL #1
  SUBLO tempregister,tempregister,%3
  ADCS  %2,%2,%2
  
  LDR tempregister,\sign
  CMP tempregister,#0
  RSBNE %2,%2,#0 
  MOV tempregister,%2
  LDR %2,\arg2save
  LDR %3,\arg3save
  LDR stackregister,\stackregistersave
  MOV %1,tempregister  

  GO \hupf
\arg2save .WORD 0
\arg3save .WORD 0
\stackregistersave  .WORD 0
\sign     .WORD 0
\hupf

 .ENDM 
